home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 16 / Computer Interactive cdrom 16 - dic 98.iso / zdnetit / content / CLASSBLD.ZIP / Include / CB_SingleOwned.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-20  |  2.0 KB  |  61 lines

  1. #ifndef CB_SINGLE_OWNED_H
  2. #define CB_SINGLE_OWNED_H
  3.  
  4. #include "CB_Single.h"
  5.  
  6. // defines for include files
  7. #define RELATION_SINGLE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  8. public:\
  9.     ClassTo* _ref##NameTo;\
  10. \
  11. protected:\
  12.     void Add##NameTo(ClassTo* item);\
  13.     void Remove##NameTo(ClassTo* item);\
  14.     void Replace##NameTo(ClassTo* item, ClassTo* newItem);\
  15. \
  16. public:\
  17.     void Move##NameTo(ClassTo* item);\
  18.     ClassTo* Get##NameTo() {return _ref##NameTo;};
  19.  
  20. #define RELATION_SINGLE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  21.     RELATION_SINGLE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  22.  
  23. // defines implementation
  24. #define INIT_SINGLE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  25.    INIT_SINGLE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  26.  
  27. #define EXIT_SINGLE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  28.     if (_ref##NameTo)\
  29.         delete _ref##NameTo;
  30.  
  31. #define REPLACE_SINGLE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  32.     REPLACE_SINGLE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  33.  
  34. #define INIT_SINGLE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  35.     assert(this);\
  36.     assert(p##NameFrom);\
  37.     assert(p##NameFrom->_ref##NameTo == (ClassTo*)0);\
  38. \
  39.     _ref##NameFrom = p##NameFrom;\
  40.     p##NameFrom->_ref##NameTo = this;
  41.  
  42. #define EXIT_SINGLE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  43.     EXIT_SINGLE_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  44.  
  45. #define REPLACE_SINGLE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  46.     assert(this);\
  47.     assert(pOld);\
  48.     assert(pOld->_ref##NameFrom);\
  49.     assert(pOld->_ref##NameFrom->_ref##NameTo == pOld);\
  50. \
  51.     _ref##NameFrom = pOld->_ref##NameFrom;\
  52.     _ref##NameFrom->_ref##NameTo = this;\
  53.     pOld->_ref##NameFrom = (ClassFrom*)0;
  54.  
  55. #define METHODS_SINGLE_OWNED_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) \
  56.     METHODS_SINGLE_ACTIVE(ClassFrom, NameFrom, ClassTo, NameTo) 
  57.  
  58. #define METHODS_SINGLE_OWNED_PASSIVE(ClassFrom, NameFrom, ClassTo, NameTo)
  59.  
  60. #endif
  61.